home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / lisp / eulisp / comp0_89.lha / Feel / Boot / CBoot / fib.em < prev    next >
Lisp/Scheme  |  1993-02-02  |  2KB  |  75 lines

  1. ;; Eulisp Module
  2. ;; Author: pab
  3. ;; File: fib.em
  4. ;; Date: Sat Dec  5 19:25:37 1992
  5. ;;
  6. ;; Project:
  7. ;; Description: 
  8. ;;
  9.  
  10. (defmodule fib
  11.         (standard0
  12.          
  13.          )
  14.         ()
  15.  
  16.   (defun ffib (x) (if (< x 2) 1 (+ (ffib (- x 1)) (ffib (- x 2)))))
  17.  
  18.   (defun fib (x) 
  19.     (if (< x 2) 
  20.     1
  21.       (binary+ (fib (binary- x 1)) 
  22.              (fib (binary- x 2)))))
  23.   (defun rfib (x) 
  24.     (if (binary<_Integer x 2) 
  25.     1
  26.       (binary+_Integer (rfib (binary-_Integer x 1)) 
  27.                (rfib (binary-_Integer x 2)))))
  28.   
  29.   (defgeneric gfib (x)
  30.     methods ((((x integer))
  31.           (if (< x 2) 1 
  32.         (+ (gfib (- x 1))
  33.            (gfib (- x 2)))))))
  34.     
  35.             
  36.       ;; end module
  37.       )
  38. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  39. ;;                                                                           ;;
  40. ;;  EuLisp Module                     Copyright (C) University of Bath 1991  ;;
  41. ;;                                                                           ;;
  42. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  43.  
  44. (defmodule fib 
  45.  
  46.   (standard0) ()
  47.  
  48.   ()
  49.  
  50.   (defun ffib (x) (if (< x 2) 1 (+ (ffib (- x 1)) (ffib (- x 2)))))
  51.  
  52.   (defun fib (x) 
  53.     (if (< x 2) 
  54.     1
  55.         (binary-plus (fib (binary-difference x 1)) 
  56.              (fib (binary-difference x 2)))))
  57.   
  58.   (defgeneric gfib (x)
  59.     methods ((((x integer))
  60.           (if (< x 2) 1 
  61.         (+ (gfib (- x 1))
  62.            (gfib (- x 2)))))))
  63.     
  64.             
  65.   ;; Employ the methods directly (horrible n'est ce pas)
  66.   (defun rfib (x) 
  67.     (if (generic_binary_lt\,Integer\,Integer x 2)
  68.     1
  69.       (generic_binary_plus\,Integer\,Integer 
  70.        (rfib (generic_binary_difference\,Integer\,Integer x 1))
  71.        (rfib (generic_binary_difference\,Integer\,Integer x 2)))))
  72.        
  73.  
  74. )
  75.